"""Python 类型注解用于在代码中明确变量、函数参数和返回值的类型，从而提高代码的可读性和可维护性。
它们是 Python 3.5 引入的，旨在提供静态类型检查支持。
类型注解并不会影响程序的运行，但可以帮助工具（如 mypy）进行静态类型检查"""
import json
import random

var_1: int = 10
var_2:str = "ITHEIMA"
var_3:bool = True
# 类对象类型注解
class Student:
    pass

stu: Student = Student() # stu是Student类的一个对象

# 基础容器类型注解
my_list: list[int] = [1, 2, 3]
my_tuple: tuple[int, str, bool] = (3, "black", False)
my_dict: dict[str, int] = {"tom": 20}

# 在注释中进行类型注解
var_4 = random.randint(1, 10) # type:int
var_5 = json.loads('{"name": "Lily"}')#type:{str, str}
def func():
    return 10

var_6 = func() # type:int
def add(x:int, y:int):
    return x + y
def func_1(data: list)->list:
    return data
print(func_1(1)) # 类型和注解不一致，仍然执行（类型注解是提示性的，而非决定性的）

"""Union联合类型注解"""
# 导包
from typing import Union
my_list_1: list[Union[str, int]] = [1, 2, "add", "sub"]
def func_2(data: Union[int, str])->Union[str, int]: # 返回值数据类型注解
    pass

func_2(3) # str，int二选一
func_2("abc")